package com.hcryan.djm.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hcryan.djm.pojo.enums.Gender;
import com.hcryan.djm.pojo.enums.UserStatus;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户表
 * @TableName user
 */
@TableName(value ="user")
@Data
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户主键
     */
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;

    /**
     * 用户名，唯一
     */
    @TableField(value = "username")
    private String username;

    /**
     * 邮箱，唯一
     */
    @TableField(value = "email")
    private String email;

    /**
     * 手机号码
     */
    @TableField(value = "phone")
    private String phone;

    /**
     * 密码
     */
    @TableField(value = "password")
    private String password;

    /**
     * 用户全名
     */
    @TableField(value = "full_name")
    private String fullName;

    /**
     * 性别，MAN: 男，FEMALE: 女，OTHER: 其他
     */
    @TableField(value = "gender")
    private Gender gender;

    /**
     * 生日
     */
    @TableField(value = "birthday")
    private Date birthday;

    /**
     * 头像图片路径
     */
    @TableField(value = "avatar_url")
    private String avatarUrl;

    /**
     * 注册日期，默认为当前时间
     */
    @TableField(value = "registration_date")
    private Date registrationDate;

    /**
     * 上次登录时间
     */
    @TableField(value = "last_login_date")
    private Date lastLoginDate;

    /**
     * 用户状态，默认激活
     */
    @TableField(value = "status")
    private UserStatus status;

    /**
     * 是否验证，默认未验证
     */
    @TableField(value = "is_verified")
    private Integer isVerified;

    /**
     * 验证码（用于邮箱或手机验证）
     */
    @TableField(value = "verification_code")
    private String verificationCode;

    /**
     * 地址
     */
    @TableField(value = "address")
    private String address;

    /**
     * 城市
     */
    @TableField(value = "city")
    private String city;

    /**
     * 国家
     */
    @TableField(value = "country")
    private String country;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     *
     */
    @TableField(value = "update_time")
    private Date updateTime;

}